Non-volatile memory is employed in a wide variety of electronic devices such as, for example, mobile handsets, cellular phones, personal digital assistants (PDA's), pagers and handheld personal computers. The non-volatile memory in these devices typically contains firmware, application software, data, and configuration information that makes the devices operational, and may be provided by the manufacturers of the electronic devices, by system operators of telecommunication carrier networks, or by third parties developers. If defects are found in such firmware/software, or if new features are to be added to such devices, the software and/or firmware in the affected electronic devices may need to be updated. Errors and/or interruptions that may occur during the updating of such operational code may leave the electronic device in a partly or completely non-functional state. To avoid this problem, present methods of updating such software and/or firmware typically involve returning the electronic device to the manufacturer, to the system operator, or to the third party, so that an update of memory contents may be performed using a direct connection to the electronic device. This is both costly and inconvenient to both the user of the electronic device, and to one performing the update.
Reliably and efficiently updating software, firmware and configuration information in mobile/wireless electronic devices is a significant challenge. An update of software or firmware in a mobile electronic device may involve modifying a large number of memory blocks of non-volatile memory (NVM). The information used to update the electronic device may be communicated via communication paths that are subject to errors and interruptions. In addition, users may interrupt update activities in an attempt to use the device, or if the device is battery operated, the battery may simply run down.
Many types of NVM (e.g., NAND or NOR FLASH memory) take a significantly larger amount of time to write, when compared to volatile memory such as typical semiconductor RAM. The number of blocks to be written during an update process influences the update time. For example, updating one block of FLASH-type NVM may involve writing to three blocks of NVM. The update time is likely to be longer for an update that involves writing three blocks of NVM, than if fewer blocks of NVM were written. In addition, the remaining life of some types of NVM is reduced by each update. Thus, achieving update time efficiency and preserving memory life depends upon the number of writes made to some types of non-volatile memory. Minimizing the number of block writes is one approach to speeding updates to software and firmware in, for example, FLASH-based electronic devices, and extending NVM lifetime. In addition, reducing the size of the update packages used to communicate updates may also have an impact on update time.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.